#include <iostream>
#include <cstring>
using namespace std;

/*
    1.定义类：C++为了描述现实生活中各种事物，抽象为各种类--》通过程序员写代码定义即可
      语法
        class 类名
        {
            类的成员：分为两部分.部分叫做成员函数-》用来描述类具备的功能
            另一部分叫做成员变量--》用来描述类具备的参数信息
        };
        一般习惯性将类名首字母大写
        成员函数一般采用驼峰命名法(多个单词，首单词小写，第二个单词首字母大写)
        linux C编程采用下划线命名法 pthread_create


    2.使用类：使用类跟使用普通变量差不多
       int n1;
       Cat c1;  //道理一样
       公式：类名 对象名;
       Cat cl;  //翻译1：定义Cat类型的变量，变量名叫做c1
                //翻译2：定义Cat类型的对象，对象名叫做c1
                对象的本质就是个变量
      C++规定：成员函数需要通过对象来调用，不能直接使用

    3.类中成员的权限
       公有 public
       私有 private
       保护 protected

    4.如果把猫的成员变量设置成私有的--》我先访问修改这些成员变量，该怎么办？
        方法1：自己封装公有接口，设置，访问私有成员
*/

class Cat
{
public:
    // 成员函数
    void eat()
    {
        cout << name << " cat eat" << endl;
    }
    void sleep()
    {
        cout << name << " cat sleep" << endl;
    }
    void setCatInfo(const char *_name, int _age, float _weight)
    {
        strcpy(name, _name);
        age = _age;
        weight = _weight;
    }

    void showCatInfo()
    {
        cout << "name:" << name << " age:" << age << " weight:" << weight << endl;
    }

private:
    // 成员变量
    int age;
    char name[10];
    float weight;
};

int main()
{

    Cat cat1, cat2;
    cat1.setCatInfo("mimi", 2, 3.3);
    cat1.eat();
    cat1.sleep();
    cat1.showCatInfo();

    cat2.setCatInfo("lala", 3, 3.3);
    cat2.eat();
    cat2.sleep();
    cat2.showCatInfo();

    return 0;
}